In many known circuit-switched or packet-switched telephony solutions, a centralized piece of equipment (e.g. a switch or Private Branch Exchange (PBX)) provides call termination, call processing, switching and/or call handling capabilities. In large systems, the central equipment may be a powerful computer controlling a number of functions on circuit boards called line cards, which connect telephone sets to the computer. In small systems (e.g. in systems having ten or fewer terminal sets), the central intelligence may actually reside in a “golden” telephone set that is specially designed to hold the central processing equipment.
Regardless of the form the central equipment takes, a number of terminal sets (e.g. wired or wireless telephone sets) are usually connected to the central equipment. The terminal sets are typically “dumb” devices in comparison to the central equipment. That is, terminal sets may simply send hook-switch information and key presses (e.g. Dual Tone Multi-Frequency or DTMF tones) to the central equipment and convert signals from the central equipment such as a dial-tone, ringing tone, or voice signals into sound (or, in some cases, images or video). The terminal sets are typically unaware of the existence of any other terminal sets, and have no inherent capacity to interconnect themselves with another terminal set.
In centralized telephony systems, administration and discovery of telephone sets within a network is typically performed by the central equipment. For example, in a traditional circuit-switched Time Division Multiplexing (TDM) telephony system, for example, each terminal set may be connected to a port on the central call processing equipment. Typically, as part of an initialization sequence which occurs on power-up, each terminal set announces its availability to the central equipment. The central equipment monitors each port for such announcements as new terminal sets are connected, and is thus capable of “discovering” newly-added terminal sets.
In centralized Voice-over Internet Protocol (IP) or VoIP telephony systems, a very similar but slightly more complicated procedure is employed; however, a terminal set still announces its availability to the central call processing equipment via the network. As is known in the art, VoIP is the transmission of calls over a data network based on the IP. Communication takes the form of packet data, thus there is no fixed connection as in the case of circuit-switched networks. The communication can be text, voice, graphics or video. IP equipment may adhere to such standards as H.323 and Session Initiation Protocol (SIP) for interoperability. The H.323 standard generally describes how multimedia communication is to occur between terminals, network equipment and services. The SIP standard covers the technical requirements to set up, modify and tear down multimedia sessions over the Internet. As used herein, the term “call” refers to a multimedia communication between two endpoints, and includes a voice telephone call.
Regardless of whether central equipment is circuit switched or packet switched, during the course of discovering a new terminal set the central equipment will usually automatically assign and manage a Directory Number (DN), which is a form of network address. The DN may be, e.g., a PBX extension. As DNs are assigned to different sets, the DNs are added to a list of DNs maintained at the central equipment. Often, it is only on the basis of this centralized list that the centralized equipment is able to determine the identity of the physical terminal set that should be called when a DN is forwarded from a calling terminal set. DNs are only one example of data that may be maintained centrally by the central equipment for possible use by more than one terminal set. Other examples may include user names and user call handling options.
Another responsibility of the central equipment may be to inform terminal sets of the current date/time. Although each terminal set may be a digital device including a clock circuit which is capable of maintaining a local date/time (also referred to simply as “local time”), such clock circuits are usually susceptible to significant drift over time. Accordingly, multiple terminal sets initially indicating the same time that are left to advance time independently are likely to become further and further out of synchronization with respect to one another. For this reason, central equipment may be used to periodically synchronize interconnected terminal sets, e.g. by periodically instructing each terminal set to synchronize its local time with the time maintained by the central equipment, which is considered to be the correct “network time”.
As the costs associated with greater processing capacity and memory continue to decrease, the inclusion of a call-processing engine in every telephone set connected to a network is becoming feasible. In such systems, it may be desirable to eliminate the central equipment. Such a decentralized system may be referred to as a distributed telephony system.
Disadvantageously, the above-described approach for synchronizing time across multiple terminal sets is ill-suited for a decentralized or distributed telephony system, since no centralized equipment may exist.
A problem related to time synchronization is maintaining synchronization (i.e. coherence) between copies of data at multiple terminal sets. In a distributed telephony system, each terminal set may be required to maintain its own local copy (i.e. version) of data which would have been maintained centrally in a centralized system. When a copy of data is changed at one terminal set (e.g. due to user input or an update by a system administrator), the updated copy at that terminal set will no longer be synchronized with (i.e. the same as) the copies of that data at other terminal sets. It will therefore usually be desirable or necessary to propagate the updated copy of the data to every other terminal set. Of course, it is possible for another copy of the same data to be changed at another terminal set nearly simultaneously with the first change. A reliable scheme of determining which of the two conflicting data values is preferable (i.e. which copy or version of the data should be maintained versus being discarded) is needed.
In some systems, timestamps have been used for resolution of data conflicts in these situations. The premise of such schemes is usually “most recent copy wins”. Of course, in order for such schemes to operate reliably, network devices require a consistent view of time (referred as “network time”). In generalized computing environments, this may be achieved with the use of a time server. A time server is a computing device which maintains a more accurate representation of date/time than other network devices. Client network devices may refer to the time server using a standardized protocol to query network time and may then set their local time (applying time zone adjustments if necessary). Disadvantageously, however, such time servers may not be available in some networks.
In some synchronized telephony networks, millisecond-accurate network time is maintained using dedicated time signals, delivered over dedicated links. This approach may provide great accuracy, however such implementations are complex, and associated costs may be considered to be excessive.
Another problem associated with the use of timestamps to resolve data synchronization conflicts is that, in certain situations, the value of a timestamp associated with a changed piece of data may not be a reliable indicator of the relative age of that data. This is due to the fact that, in certain situations, clocks from which timestamps are generated may appear to “jump” in a non-linear fashion. For example, when clocks are adjusted for daylight savings time, time may appear to jump forward or backward by one hour. Alternatively, time may appear to jump forward or backward when a clock is reset by a system administrator. In these situations, data having a “newer” timestamp may actually represent an older copy of that data than a version having an “older” timestamp. As such, conventional timestamp-based synchronization techniques may not be adequate for data synchronization in distributed networks.
Accordingly, in a distributed telephony system, an alternative manner of synchronizing time between terminal sets and maintaining data coherence between terminal sets or other forms of network devices would be desirable. More generally, in distributed systems such as a peer-to-peer distributed multimedia communications systems, a manner of synchronizing time and maintaining data coherence between network devices would be desirable.